d51f45894f04c5afccd9a078f24bd2dd70e4fb10,java/src/org/exist/jms/replication/subscribe/ReplicationJmsListener.java,ReplicationJmsListener,relocateDocument,#eXistMessage#boolean#,725
Before Change
int lockTypeOriginal = keepDocument ? Lock.READ_LOCK : Lock.WRITE_LOCK;
Txn txn = txnManager.beginTransaction();
setOrigin(txn);
try {
broker = brokerPool.get(Optional.of(securityManager.getSystemSubject()));
// Open collection if possible, else abort
srcCollection = broker.openCollection(sourceColURI, lockTypeOriginal);
if (srcCollection == null) {
String errorMessage = String.format("Collection not found: %s", sourceColURI);
LOG.error(errorMessage);
txnManager.abort(txn);
// be silent
return;
}
// Open document if possible, else abort
srcDocument = srcCollection.getDocument(broker, sourceDocURI);
if (srcDocument == null) {
String errorMessage = String.format("No resource found for path: %s", sourcePath);
LOG.error(errorMessage);
txnManager.abort(txn);
// be silent
return;
}
// Open collection if possible, else abort
destCollection = broker.openCollection(destColURI, Lock.WRITE_LOCK);
if (destCollection == null) {
String errorMessage = String.format("Destination collection %s does not exist.", destColURI);
LOG.error(errorMessage);
txnManager.abort(txn);
// be silent
return;
}
// Perform actial move/copy
if (keepDocument) {
broker.copyResource(txn, srcDocument, destCollection, destDocURI);
} else {
broker.moveResource(txn, srcDocument, destCollection, destDocURI);
}
// Commit change
txnManager.commit(txn);
} catch (Throwable e) {
LOG.error(e);
txnManager.abort(txn);
throw new MessageReceiveException(e.getMessage(), e);
} finally {
After Change
try (DBBroker broker = brokerPool.get(Optional.of(securityManager.getSystemSubject()));
Txn txn = txnManager.beginTransaction()) {
setOrigin(txn);
// Open collection if possible, else abort
srcCollection = broker.openCollection(sourceColURI, lockTypeOriginal);
if (srcCollection == null) {
LOG.error(String.format("Collection not found: %s", sourceColURI));
txn.abort();
return; // be silent
}